package ${package.Service};

import com.baomidou.mybatisplus.core.metadata.IPage;
import ${package.Entity}.${entity};
import ${util.getVoPackage(package.Entity)}.${entity}Vo;
import ${superServiceClassPackage};

/**
 * <p>
 * ${table.comment!} 服务类
 * </p>
 *
 * @author ${author}
 * @since ${date}
 */
<#if kotlin>
interface ${table.serviceName} : ${superServiceClass}<${entity}>
<#else>
public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {
<#if (util.getPrimaryKeys(table.fields)?size ==1)>
<#assign primaryField=util.getPrimaryKeys(table.fields)[0]/>

    /**
    * 新增${table.comment}
    * @param entity
    * ${table.name}新增数据
    * @return 新增数据id
    */
    ${primaryField.propertyType} add${entity}(${entity} entity);
<#else>

    /**
    * 新增${table.comment}
    * @param entity
    * ${table.name}新增数据
    * @return
    */
    void add${entity}(${entity} entity);
</#if>
    /**
    * 修改${table.comment}
    * @param entity
    * ${table.name}修改数据
    * @return 修改记录数
    */
    int update${entity}(${entity} entity);
 <#if (util.getPrimaryKeys(table.fields)?size ==1)>

    /**
    * 取指定ID的${table.comment}数据
    * @param id
    * ${table.name} 主键ID
    * @return ${entity}Vo
    * 返回指定ID的${table.comment}数据
    */
  <#assign primaryField=util.getPrimaryKeys(table.fields)[0]/>
    ${entity}Vo get${entity}ById(${primaryField.propertyType} id);
 </#if>

    /**
    * ${table.comment}分页取数
    * @param entityVo
    * ${table.name} 分页取数参数，pageIndex=页码；pageSize=每页记录数；
    * @return IPage<${entity}Vo>
    * 返回分页数据
    */
    IPage<${entity}Vo> get${entity}List(${entity}Vo entityVo);
 <#if (util.getPrimaryKeys(table.fields)?size ==1)>

     /**
    * 删除指定ID的${table.comment}数据
    * @param id
    * ${table.name} 主键ID
    */
 <#assign primaryField=util.getPrimaryKeys(table.fields)[0]/>
    void delete${entity}ById(${primaryField.propertyType} id);
 </#if>
 <#if (util.getPrimaryKeys(table.fields)?size ==1)>

    /**
    * 批量删除指定ID的${table.comment}数据
    * @param ids
    * ${table.name} 主键ID数组
    */
  <#assign primaryField=util.getPrimaryKeys(table.fields)[0]/>
    void batchDelete(${primaryField.propertyType}[] ids);
 </#if>
 <#if (util.getPrimaryKeys(table.fields)?size ==1)>

    /**
    * 逻辑删除指定ID的${table.comment}数据
    * @param id
    * ${table.name} 主键ID
    */
  <#assign primaryField=util.getPrimaryKeys(table.fields)[0]/>
    void logicDeleteById(${primaryField.propertyType} id);
 </#if>
 <#if (util.getPrimaryKeys(table.fields)?size ==1)>

    /**
    * 批量删除指定ID的${table.comment}数据
    * @param ids
    * ${table.name} 主键ID数组
    */
  <#assign primaryField=util.getPrimaryKeys(table.fields)[0]/>
    void batchLogicDelete(${primaryField.propertyType}[] ids);
 </#if>
}
</#if>
